還記得昨天的進度嗎?今天要把另外一個Button的功能也完成,同時處理剩下的顯示部分以及一些問題。
這裡的功能是將按下Button那瞬間將時間存放在陣列裡,只要狀態沒有改變就能一直存進新的值,同時更新TableView裡的內容。
當狀態改變的時候,按下Button會將一切重置。
@IBAction func lapOrReset(_ sender: Any) {
if lapStauts{
stopWatchs.insert(stopWatchLabel.text!, at: 0)
lapTableView.reloadData()
}else{
stopWatchs.removeAll()
lapTableView.reloadData()
milliSeconds = 0
calcuMilSec = 0
calcuSec = 0
calcuMin = 0
calcuHor = 0
stopWatchLabel.text = "00:00:00:00"
startStauts = true
lapStauts = false
lapButton.setTitle("Lap", for: .normal)
lapButton.setTitleColor(.black, for: .normal)
lapButton.isEnabled = false
}
}
這個函式會一個個讀取陣列裡的內容並將其放進TableViewCell裡,然後顯示出來。
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as! StopWatchTableViewCell
cell.lapLabel.text = "Lap \(stopWatchs.count - indexPath.row)"
cell.timeLabel.text = "\(stopWatchs[indexPath.row])"
return cell
}
到這裡整個碼表的功能應該都完成了,然而在測試時發現在計時途中滑動TableView時會導致暫停計時。
解決辦法是在呼叫Timer的下一行打上下面的程式,這樣就能解決了。
RunLoop.current.add(timer, forMode: .common)
那麼整個碼表算是完成了,明天來做跟碼表差不多但是麻煩一點的計時器。